<?php
class AddImage 
{
    /**
     * @var object Zend DB Adapter
     */
    private $_db;
    /**
     * @var string
     */
   
    public function __construct()
    {
			$this->_db = Zend_Registry::get('db');
    }
    
    public function thumbnail($inputFileName, $maxSize = 100)
    {
        $info = getimagesize($inputFileName);

        $type = isset($info['type']) ? $info['type'] : $info[2];

        // Check support of file type
        if ( !(imagetypes() & $type) )
        {
            // Server does not support file type
            return false;
        }

        $width  = isset($info['width'])  ? $info['width']  : $info[0];
        $height = isset($info['height']) ? $info['height'] : $info[1];

        // Calculate aspect ratio
        $wRatio = $maxSize / $width;
        $hRatio = $maxSize / $height;

        // Using imagecreatefromstring will automatically detect the file type
        $sourceImage = imagecreatefromstring(file_get_contents($inputFileName));

        // Calculate a proportional width and height no larger than the max size.
        if ( ($width <= $maxSize) && ($height <= $maxSize) )
        {
            // Input is smaller than thumbnail, do nothing
            return $sourceImage;
        }
        elseif ( ($wRatio * $height) < $maxSize )
        {
            // Image is horizontal
            $tHeight = ceil($wRatio * $height);
            $tWidth  = $maxSize;
        }
        else
        {
            // Image is vertical
            $tWidth  = ceil($hRatio * $width);
            $tHeight = $maxSize;
        }

        $thumb = imagecreatetruecolor($tWidth, $tHeight);

        if ( $sourceImage === false )
        {
            // Could not load image
            return false;
        }

        // Copy resampled makes a smooth thumbnail
        imagecopyresampled($thumb, $sourceImage, 0, 0, 0, 0, $tWidth, $tHeight, $width, $height);
        imagedestroy($sourceImage);

        return $thumb;
    }

    /**
     * Save the image to a file. Type is determined from the extension.
     * $quality is only used for jpegs.
     * Author: mthorn.net
     */
    public function imageToFile($im, $fileName, $quality = 80)
    {
        if ( !$im || file_exists($fileName) )
        {
           return false;
        }

        $ext = strtolower(substr($fileName, strrpos($fileName, '.')));

        switch ( $ext )
        {
            case '.gif':
                imagegif($im, $fileName);
                break;
            case '.jpg':
            case '.jpeg':
                imagejpeg($im, $fileName, $quality);
                break;
            case '.png':
                imagepng($im, $fileName);
                break;
            case '.bmp':
                imagewbmp($im, $fileName);
                break;
            default:
                return false;
        }

        return true;
    }
    
    public function uploadHotelImages($files, $hotelid)
    {
    	$uploaddir = 'images/hotels/';
    	$target_large_path = 'images/hotels/large/';
    	$target_thumb_path = 'images/hotels/thumbs/';
	    foreach ($files["pic"]["error"] as $key => $error)
	    {
	        if ($error == UPLOAD_ERR_OK)
	        {
	            $tmp_name = $files["pic"]["tmp_name"][$key];
	            $name = $files["pic"]["name"][$key];
	            $uploadfile = $uploaddir . basename($name);
	            $target_thumb_file = $target_thumb_path . basename($name); 
				$target_large_file = $target_large_path . basename($name);
	 
	            if (move_uploaded_file($tmp_name, $uploadfile))
	            {
	                $large_image = $this->thumbnail($uploadfile, 550);
					$this->imageToFile($large_image, $target_large_file);
					
					$large_image = $this->thumbnail($uploadfile, 100);
					$this->imageToFile($large_image, $target_thumb_file);
					
					unlink($uploadfile);
					
					$add_img = $this->_db->exec("
						INSERT INTO hotel_images(hotel_id, filename)
						VALUES(" . $hotelid . ", '" . $name . "')");
					if($add_img) {
	            		header("Location: /admin/index/adminview/");
					}
	            }
	            else
	            {
	                echo "Error: File ".$name." cannot be uploaded.<br/>";
	            }
	        }
	    }
    }
    
    function uploadHotdeals($files, $action=""){
        $uploaddir = 'images/hotdeals/';
    	$target_large_path1 = 'images/hotdeals/large/';
    	$target_thumb_path1 = 'images/hotdeals/thumbs/';
        
	    foreach ($files["default_image"]["error"] as $key => $error)
	    {
	        //if ($error == UPLOAD_ERR_OK) {
                    
                    $title = $_POST["title"];
                    $description = $_POST["description"];
                    $offer_valid_from = $_POST["offer_valid_from"];
                    $offer_valid_to = $_POST["offer_valid_to"];
	            $tmp_name = $files["default_image"]["tmp_name"][$key];
                    $name = $files["default_image"]["name"][$key];
	            $status = $_POST["status"];
	            $uploadfile = $uploaddir . basename($name);
	            $target_thumb_file = $target_thumb_path1 . basename($name); 
                    $target_large_file = $target_large_path1 . basename($name);
                    //exit($action);
                    if($action!=""){
                            $id=$action;
                            
                            Zend_Loader::loadFile('../application/admin/models/Hotdeals.php');
                            $hotdeals_module = new Hotdeals();                        
                            $hotdeals_arr = $hotdeals_module->gethotdealsbyid($id);
                            $old_image = $hotdeals_arr['default_image'];                            
                        }
	            if (move_uploaded_file($tmp_name, $uploadfile))
	            {
                        
	                $large_image = $this->thumbnail($uploadfile, 550);
                        $this->imageToFile($large_image, $target_large_file);
					
                        $large_image = $this->thumbnail($uploadfile, 100);
                        $this->imageToFile($large_image, $target_thumb_file);

                        unlink($uploadfile);
                      } else {
	                echo "Error: Couldn't uplaod the image ".$name.".<br/>";
                      }
                        
                        if ($action==""){
                        $add_hotdeal = $this->_db->exec("
                                INSERT INTO hotdeals(title, description, offer_valid_from, offer_valid_to, default_image, status)
                                VALUES('".$title."', '".$description."', '".$offer_valid_from."', '".$offer_valid_to."', '".$name."', '".$status."')");
            }else{
                        /*exit("
                                UPDATE hotdeals
                                SET title='".$title."', 
                                description='".$description."', 
                                offer_valid_from='".$offer_valid_from."', 
                                offer_valid_to='".$offer_valid_to."', 
                                
                                status='".$status."'
                                WHERE id=".$id."
                                ");*/
                        $add_hotdeal = $this->_db->exec("
                                UPDATE hotdeals
                                SET title='".$title."', 
                                description='".$description."', 
                                offer_valid_from='".$offer_valid_from."', 
                                offer_valid_to='".$offer_valid_to."', 
                                
                                status='".$status."'
                                WHERE id=".$id."
                                ");
                        //default_image='".$default_image."', 
                                    
                        }
                        //echo "add_hotdeal".$add_hotdeal;
                        //if($add_hotdeal) {
                            header("Location: /admin//index/adminview/");
                        //}
	            
	            
	        //}
	    }
    }   
    
}   
?>